<?php
/**
 * Clase que representa un archivo
 *
 * @author Marco
 */
class Archivo {

  private $rutaCompleta = -1;
  private $infoArch = -1;    
  private $tamano = -1;
  private $extension = -1;

/**
 * Clase que representa un archivo
 *
 * @param string $rutaCompleta     Ej: 'nomDirectorio/nomArchivo.php'
 *
 * @author Marco Rodas
  */
  function  __construct($rutaCompleta){
    if(is_file($rutaCompleta)){
      $this->rutaCompleta = $rutaCompleta; 
      $this->infoArch = pathinfo($rutaCompleta); 
    }
    else{
        throw new Exception("La ruta ".$rutaCompleta." no corresponde a un archivo válido.");
    }
  }
  
  public function nomDirectorio(){
      return $this->$infoArch['dirname'];
  }
  
  public function nombre(){
      return $this->$infoArch['filename'];
  }
/**
 *
 * @return string Devuelve la extension del archivo, es cadena vacia si no tiene.
 */
  public function extension(){
      if($this->extension ==-1){
          $this->extension = (strpos($this->nombre(), '.')===false)?(''):($infoArch['extension']);
      }
      return $this->extension;
  }
  
  public function tamanoBytes(){
      if($this->tamano == -1){
          $this->tamano=filesize($this->rutaCompleta);
          clearstatcache();
      }
      return $this->tamano;
  }
  
  public function tamanoKB(){
      return $this->tamanoBytes()/pow(10,3);      
  }
  
  public function tamanoMB(){
      return $this->tamanoBytes()/pow(10,6);      
  }
  
  public function tamanoGB(){
      return $this->tamanoBytes()/pow(10,9);      
  }
  
  public function tamanoKiB(){
      return $this->tamanoBytes()/pow(2,3);
  }
  
  public function tamanoMiB(){
      return $this->tamanoBytes()/pow(2,6);
  }
  
  public function tamanoGiB(){
      return $this->tamanoBytes()/pow(2,9);
  }

}

?>
